package com.divemotor.ventarepuestosinternet.service;

import java.util.List;

import com.divemotor.ventarepuestosinternet.beans.adapter.CotizacionAdapter;
import com.divemotor.ventarepuestosinternet.beans.adapter.ElementoCotizacionAdapter;
import com.divemotor.ventarepuestosinternet.beans.form.CotizacionBeanForm;
import com.divemotor.ventarepuestosinternet.exception.DivemotorBusinessException;
import com.divemotor.ventarepuestosinternet.model.Cotizacion;
import com.divemotor.ventarepuestosinternet.model.EstadoCotizacion;
import com.divemotor.ventarepuestosinternet.model.Usuario;
import com.divemotor.ventarepuestosinternet.model.UsuarioCliente;
import com.divemotor.ventarepuestosinternet.model.Vendedor;
import com.divemotor.ventarepuestosinternet.util.Paginacion;

public interface CotizacionService {
	
	void actualizarUsuarioDeCliente(UsuarioCliente usuarioCliente) throws DivemotorBusinessException;
	void guardar(Cotizacion cotizacion)throws DivemotorBusinessException;
	List<CotizacionAdapter> buscarCotizacionPorUsuarioAutenticado(CotizacionBeanForm historialBean) throws DivemotorBusinessException;
    Cotizacion obtenerCotizacionPorIdConDetalle(Integer idCotizacion) throws DivemotorBusinessException;
	List<Cotizacion> listar()throws DivemotorBusinessException;
	List<Cotizacion> listarPorSupervisor()throws DivemotorBusinessException;
	List<EstadoCotizacion> obtenerEstadosCotizacionPorUsuarioSucursal(Usuario usuarioAutenticado)throws DivemotorBusinessException;
    List<ElementoCotizacionAdapter> obtenerDetalleCotizacionAdapter(Integer idCotizacion);
    List<ElementoCotizacionAdapter> obtenerDetalleRepuesto(Integer idCotizacion);
    List<ElementoCotizacionAdapter> obtenerDetallePromocion(Integer idCotizacion);
	List<Vendedor> obtenerVendedoresPorUsuarioSucursal(Usuario usuarioAutenticado)throws DivemotorBusinessException;
	int cantidadCotizaciones()throws DivemotorBusinessException;
	void actualizar(Integer idCotizacion, Integer idEstadoCotizacionEditar, Integer idVendedorEditar,String observaciones)throws DivemotorBusinessException;
	int cantidadCotizacionesVendedor(CotizacionBeanForm cotizacionBean) throws DivemotorBusinessException;
	List<CotizacionAdapter> buscarCotizacionesVendedor(Paginacion paginacion,CotizacionBeanForm cotizacionBean) throws DivemotorBusinessException;
	List<CotizacionAdapter> buscarAdapter(Paginacion paginacion, CotizacionBeanForm cotizacionBean) throws DivemotorBusinessException;
	int cantidadCotizaciones(CotizacionBeanForm cotizacionBean) throws DivemotorBusinessException;
	List<Cotizacion> listarCotizacionesDeUsuarioClienteAutenticado(Integer idUsuario) throws DivemotorBusinessException;
	void actualizar(Cotizacion cotizacionEditar) throws DivemotorBusinessException;

}
